## list列表类型（可变序列）

# 特点：
'''
1.列表元素按照顺序有序排列
2.索引映射唯一元素
3.列表可以存储重复元素
4.列表元素任意数据类型混存
5.根据需要动态分配内存与回收内存
'''

print('----------创建方式1 使用[] 中括号------------')
listArr1 = ['abc', '利阿斯', 324]
print(listArr1)

print('----------创建方式2 使用list内置函数------------')
listArr2 = list(['alkajs', '里斯', 34.4])
print(listArr2)

# 获取列表长度
print('获取列表长度: ', len(listArr2))

# 列表判断 元素 in 存在  not in 不存在 返回boolean;
print(324 in listArr1) # True 324元素再列表中存在

# 遍历list列表中的元素；
for item in listArr1:
    print(item)
print('遍历结束。。。。')


print('-----------------list添加元素---------------')
## ●添加元素
addList1 = [123, 'abc']

# append() 添加元素到列表末尾
addList1.append('王五')
addList1.append(['张三', '丽丽'])   # [123, 'abc', '王五', ['张三', '丽丽']]

# extend() 将列表添加到另一个列表中
addList1.extend(['张三', '丽丽'])
print(addList1)

# insert(索引， 元素) 将元素添加到指定索引位置
addList1.insert(0, '赛诸葛')
print(addList1)

# ●使用生成表达式创建列表  公式： i for i in range(1, 20) 第一个i就是新列表元素值；
clst1 = [i for i in range(1, 10)]
print('使用生成表达式生成列表：', clst1)

clst1 = [i*i for i in range(1, 10)]
print('使用生成表达式生成列表：', clst1)

clst1 = [i*2 for i in range(1, 10)]
print('使用生成表达式生成列表：', clst1)

print('-----------------list移除元素---------------')
## ●移除元素
removeList1 = [12, 23, 'abc', True, 'ggg', 23]

# remove() 删除一个元素； 移除元素相同的 只移除第一个；
removeList1.remove(23)  # 注意：当移除的元素不在列表中会报错：ValueError: list.remove(x): x not in list
print(removeList1)

# pop() 根据索引删除元素； 注意：索引必须存在，否则报错！
removeList1.pop(0)
print(removeList1)

removeList2 = [12, 23, 'abc', True, 'ggg', 23]
print('获取列表中的从索引1开始到索引<3结束，步长默认1：', removeList2[1:3])
removeList2[1:3] = []
print('removeList2[1:3] = [] 此方式可删除列中的元素不会创建新的元素：', removeList2)

# clear() 清空列表中的所有元素
removeList1.clear()
print(removeList1)

# del 清除列表在内存的存储空间； 在访问元素就会报错
del removeList1
# print('del ', removeList1) #NameError: name 'removeList1' is not defined


print('-----------------list修改元素---------------')
## ●修改元素
updateList1 = [1, 2, 3, 4, 5, 6]
updateList1[1] = 54
print('一次修改一个值: 根据索引1修改值： updateList1[1] = 54', updateList1)

print(updateList1[1:3])
print('一次修改多个值，使用切片的方式修改如：updateList1[1:3] 从索引1开始到<3结束，自增步长默认1')
updateList1[1:3] = [22,33,44]
print(updateList1)


